package inits

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"srv/basic/config"
	"srv/basic/global"
	"srv/handler/model"

	"sync"
)

var (
	once sync.Once
)

// InitMysql 单例初始化 MySQL 数据库

func InitMysql() {
	once.Do(func() {
		var err error
		mysqlConfig := config.Config.Mysql
		dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True",
			mysqlConfig.User,
			mysqlConfig.Password,
			mysqlConfig.Host,
			mysqlConfig.Port,
			mysqlConfig.Database,
		)
		global.DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
		if err != nil {
			panic(err)
		}

		fmt.Println("MySQL数据库连接成功")

		// 自动迁移表
		err = global.DB.AutoMigrate(&model.Admin{}, model.School{})
		if err != nil {
			panic(err)
		}

		fmt.Println("MySQL数据表迁移成功")

		db, err := global.DB.DB()
		if err != nil {
			panic(err)
		}

		fmt.Println("MySQL连接池连接成功")

		db.SetMaxIdleConns(10)
		db.SetMaxOpenConns(100)
	})
}
